package someTestExcemple.huaweiOd.container.array;

//https://blog.csdn.net/guorui_java/article/details/142234863
//华为OD机试 - 最低位排序 - 数组（Java 2024 E卷 100分）

import java.util.*;

/**
 * 一、题目描述
 * 给定一个非空数组(列表)，其元素数据类型为整型，请按照数组元素十进制最低位从小到大进行排序，
 * 十进制最低位相同的元素，相对位置保持不变。
 *
 * 当数组元素为负值时，十进制最低位等同于去除符号位后对应十进制值最低位。
 *
 * 二、输入描述
 * 给定一个非空数组，其元素数据类型为32位有符号整数，数组长度[1,1000]
 *
 * 三、输出描述
 * 输出排序后的数组
 *
 * 1、输入
 * 1,2,5,-21,22,11,55,-101,42,8,7,32
 *
 * 2、输出
 * 1,-21,11,-101,2,22,42,32,5,55,7,8
 *
 * 3、说明
 */
public class SortByLeastSignificantBit {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] array = sc.nextLine().split(",");
        List<Integer> list = new ArrayList<>();
        for(String s : array) {
            list.add(Integer.parseInt(s.trim()));
        }
        sc.close();
        //自定义比较器排序规则
        //按照数组元素十进制最低位从小到大进行排序
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1,Integer o2) {
                int lastDigit1 = Math.abs(o1) % 10;
                int lastDigit2 = Math.abs(o2) % 10;
                return lastDigit1 - lastDigit2;
            }
        });
        //输出比较结果
        StringJoiner sj = new StringJoiner(",");
        for(Integer i : list) {
            sj.add(i.toString());
        }
        System.out.println(sj.toString());
    }
}
